Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

135
Vistas
¿Cuál es la diferencia entre importar "nombre" de "módulo" e importar * como "nombre" de "módulo"?

El código en mi aplicación es así.

 import { HttpExceptionFilter } from './common/exceptions/http-exception.filter'; import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import { ValidationPipe } from '@nestjs/common'; import { DocumentBuilder, OpenAPIObject, SwaggerModule } from '@nestjs/swagger'; //1. import * as expressBasicAuth from 'express-basic-auth'; //2. //import expressBasicAuth from 'express-basic-auth'; => promise unhandled error async function bootstrap() { const app = await NestFactory.create(AppModule); app.useGlobalPipes(new ValidationPipe()); app.useGlobalFilters(new HttpExceptionFilter()); app.use( ['/docs', '/docs-json'], expressBasicAuth({ challenge: true, users: { [process.env.SWAGGER_USER]: process.env.SWAGGER_PASSWORD, }, }), ); };

Quiero saber la diferencia entre 1 y 2.

Porque cuando ejecuto mi aplicación usando 2 (9 líneas), hubo un error no controlado de promesa.

Quiero saber cómo funcionan esas dos formas. Me referí al documento oficial de mozilla, pero no pude entenderlo bien. Agradecería si pudieras responderme.

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Primero, entendamos cómo funcionan las importaciones.

así que considere que tengo un archivo con las siguientes exportaciones

 // file name -> modules export const add = (x, y) => x + y; export const subtract = (x, y) => x - y; export default (x, y) => x * y;

ahora puedo importar todas estas funciones en otro archivo como este

 import defaultFunction, { add, subtract } from './modules.js'; console.log(add(1, 2)) // 3 console.log(subtract(2, 1)) // 1 console.log(defaultFunction(2, 2)) // 2 * 2 = 4

o puedo usar import * as <name> from <file/package> para importar todas las exportaciones dentro de un archivo.

como esto

 import * as myModules from './modules.js'; // NOTE: this will only give you add and subtract functions but not the default one // now to actually access the default function you have to use // import * as <name> from <file/package> // <name>.default to access the default export // or simply // import default, { } from <file/package> console.log(myModules.add(1, 2)) // 3 console.log(myModules.subtract(2, 1)) // 1 console.log(myModules.default(2, 2)) // 2 * 2 = 4 // or i can destructure the "myModules" import const { add, subtract } = myModules;

Conclusión

Creo que el problema es que la biblioteca que está utilizando no proporciona una exportación predeterminada para usar import expressBasicAuth from 'express-basic-auth'; o podría estar exportando diferentes funciones para exportaciones con named exports y default exports

about 4 years ago · Juan Pablo Isaza Denunciar

0

Según su código:

  1. import * as expressBasicAuth from ...

    Importa todo export const variable1...; export const variable2...; elementos como un solo elemento.

  2. import expressBasicAuth from ...

    Importa un solo elemento export default si había uno definido dentro de la biblioteca.

Dependiendo de la implementación de la biblioteca, puede haber funciones totalmente diferentes exportadas de esas dos formas.

about 4 years ago · Juan Pablo Isaza Denunciar

0

La mayoría de las veces, el módulo exporta varias cosas. Hay dos excelentes formas de importar desde otro módulo cuando el módulo exporta un objeto con propiedades. Este es el caso común.

Importe todo el módulo, dándole un nombre:

 import * as child_process from "child_process"; // then later... child_process.spawn(...); or pick the names you want to import: import { spawn } from "child_process"; // then later spawn(...);

a veces el módulo exporta solo una cosa. mecanografiado tiene el concepto de exportación predeterminada Si un módulo declara una exportación predeterminada, debe traerla de esta manera:

 import thing from "thing";

Ahora tiene una función o una clase (cualquiera que sea su exportación predeterminada) en la cosa.

Más comúnmente en los módulos de JavaScript (¿CommonJS?), el autor de un módulo anulará module.exports a una función o clase en lugar de agregar propiedades al objeto de exportaciones como lo haría un módulo ES.

entonces en común js tenemos

 const expressBasicAuth = require(express-basic-auth);

y en mecanografiado:

 import * as expressBasicAuth from 'express-basic-auth';
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda